﻿using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;

namespace Library.Linq
{
    public interface IThenBy<T>
    {
        [Pure]
        IOrderedEnumerable<T> ThenBy<TKey>(Func<T, TKey> keySelector);
        [Pure]
        IOrderedEnumerable<T> ThenBy<TKey>(Func<T, TKey> keySelector, IComparer<TKey> comparer);
        [Pure]
        IOrderedEnumerable<T> ThenByDescending<TKey>(Func<T, TKey> keySelector);
        [Pure]
        IOrderedEnumerable<T> ThenByDescending<TKey>(Func<T, TKey> keySelector, IComparer<TKey> comparer);
    }
}
